Expand description
§symsrv
This crate lets you download and cache symbol files from symbol servers,
according to the rules from the _NT_SYMBOL_PATH
environment variable.
It exposes an async API and uses reqwest
and tokio::fs
.
The downloaded symbols are stored and never evicted.
§Microsoft Documentation
§Example
use std::path::PathBuf;
use symsrv::{get_default_downstream_store, get_symbol_path_from_environment, SymbolCache};
// Parse the _NT_SYMBOL_PATH environment variable.
let symbol_path =
get_symbol_path_from_environment("srv**https://msdl.microsoft.com/download/symbols");
// Create a symbol cache which follows the _NT_SYMBOL_PATH recipe.
let default_downstream = get_default_downstream_store(); // "~/sym"
let symbol_cache = SymbolCache::new(symbol_path, default_downstream.as_deref(), false);
// Download and cache a PDB file.
let relative_path: PathBuf =
["dcomp.pdb", "648B8DD0780A4E22FA7FA89B84633C231", "dcomp.pdb"].iter().collect();
let local_path = symbol_cache.get_file(&relative_path).await?;
// Use the PDB file.
open_pdb_at_path(&local_path);
Structs§
- Obtains symbols according to the instructions in the symbol path.
Enums§
- A regular cache directory or a marker for the “default downstream store”.
- The error type used in this crate.
- The parsed representation of one entry in the (semicolon-separated list of entries in the)
_NT_SYMBOL_PATH
environment variable. The syntax of this string is documented at https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/advanced-symsrv-use.
Functions§
- Currently returns ~/sym.
- Reads the
_NT_SYMBOL_PATH
environment variable and parses it. The parsed path entries use ~/sym as the default downstream store. - Parse the value of the
_NT_SYMBOL_PATH
variable. The format of this variable is a semicolon-separated list of entries, where each entry is an asterisk-separated hierarchy of symbol locations which can be either directories or server URLs.